/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.ucv.controladores.gestionrequisitos;

import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import pe.edu.ucv.daos.*;
import pe.edu.ucv.entidades.*;

/**
 *
 * @author Conrrad Martínez
 */
@ManagedBean
@SessionScoped
public class Crudcontroller {

    /**
     * Creates a new instance of Crudcontroller
     */
    @EJB EscuelaDAO escuelaDAO;
    @EJB AreaDaos areaDAO;
    @EJB AplicacionDAO aplicacionDAO;
    @EJB HardwareDAO hardwareDAO;
    @EJB CursoDAO cursoDAO;
    @EJB CicloacademicoDAO cicloacademicoDAO;
    @EJB LaboratorioDAO laboratorioDAO;
    @EJB HojaComunicacionDAO hojaComunicacionDAO;
    @EJB HorarioDAO horarioDAO;
    @EJB EquipoLaboratorioDAO equipoLaboratorioDAO;
    @EJB RequisitoDAO requisitoDAO;
    @EJB RequisitoCursoDAO requisitocursoDAO;
    String descripcionescuela;
    private String descripcionLaboratorio;
    private String descripcionHorario;
    private String descripcionHojaComunicacion;
    List<Escuela> listaEscuelas;
    List<Aplicacion> listaAplicaciones;
    List<Hardware> listaHardwares;
    List<Curso> listaCursos;
    List<Cicloacademico> listaciclos;
    List<Requisito> listaRequisitos;
    List<RequisitoCurso> listaRequisitosCursos;
    private List<Laboratorio> listaLaboratorios;
    private List<Horario> listaHorarios;
    private List<HojaComunicacion> listaHojaComunicaciones;   
    private List<Equipo> equipoDisponibles;   
    private Laboratorio laboratorioActual;
    private Horario horarioActual;
    private HojaComunicacion hojaComunicacionActual;
    private EquipoLaboratorio equipoLaboratorioActual;
    Escuela escuelaActual;
    Aplicacion aplicacionActual;
    Hardware hardwareActual;
    Curso cursoActual;
    Cicloacademico cicloacademicoActual;
    Area areaActual;
    Requisito requisitoActual;
    RequisitoCurso requisitoCursoActual;
    
    public Crudcontroller() {
    
    }
    /* Métodos de Laboratorio */
    public String doGuardarLaboratorio(){
        laboratorioDAO.guardar(laboratorioActual);
        return doListarLaboratorios();
    }
    public String doNuevoLaboratorio(){
        laboratorioActual = new Laboratorio();
        return "Registrarlaboratorio";
    }
    public String doEditarLaboratorio(Laboratorio laboratorio){
        laboratorioActual = laboratorio;        
        return "Registrarlaboratorio";
    }
    public String doBorrarLaboratorio(Integer id){
        laboratorioDAO.borrar(id);        
        return doListarLaboratorios();
    }
    public String doVerLaboratorio(Laboratorio laboratorio){
        laboratorioActual = laboratorio;        
        return "Verlaboratorio";
    }
    public String doListarLaboratorios(){
        setListaLaboratorios(laboratorioDAO.listarTodos());
        return "Laboratorios";
    }
    public String doBuscarByDescripcionLaboratorios(){
        setListaLaboratorios(laboratorioDAO.listarByDescripcion(descripcionLaboratorio));
        return "Laboratorios";
    }
    //Equipos de Laboratorio
    public String doEquiposLaboratorio(Laboratorio laboratorio){
        laboratorioActual = laboratorio;       
        laboratorioActual.setEquipoLaboratorioList(equipoLaboratorioDAO.listarByLaboratorioId(laboratorio));
        equipoLaboratorioActual = new EquipoLaboratorio();  
        equipoLaboratorioActual.setEquipoId(new Equipo());
        equipoLaboratorioActual.setLaboratorioId(laboratorio);
        setEquipoDisponibles(equipoLaboratorioDAO.listarEquiposDisponibles());
        return "EquiposLaboratorio";
    }
    public String doGuardarEquipoLaboratorio(){   
        equipoLaboratorioDAO.guardar(equipoLaboratorioActual);
        return doEquiposLaboratorio(laboratorioActual);
    }
    public String doBorrarEquipoLaboratorio(Integer id){
        equipoLaboratorioDAO.borrar(id);        
        return doEquiposLaboratorio(laboratorioActual);
    }
    /* Fin Métodos de Laboratorio */
    /* Métodos de Horario */
    public String doGuardarHorario(){
        horarioDAO.guardar(horarioActual);
        return doListarHorarios();
    }
    public String doNuevoHorario(){
        horarioActual = new Horario();
        return "Registrarhorario";
    }
    public String doBorrarHorario(Integer id){
        horarioDAO.borrar(id);        
        return doListarHorarios();
    }
    public String doEditarHorario(Horario horario){
        horarioActual = horario;        
        return "Registrarhorario";
    }
    public String doVerHorario(Horario horario){
        horarioActual = horario;        
        return "Verhorario";
    }
    public String doListarHorarios(){
        setListaHorarios(horarioDAO.listarTodos());
        return "Horarios";
    }
    public String doBuscarByDescripcionHorarios(){
        setListaHorarios(horarioDAO.listarByDescripcion(descripcionHorario));
        return "Horarios";
    }
    /* Fin Métodos de Horario */
    /* Métodos de HojaComunicacion */
    public String doGuardarHojaComunicacion(){
        hojaComunicacionDAO.guardar(hojaComunicacionActual);
        return doListarHojaComunicaciones();
    }
    public String doVerHojaComunicacion(HojaComunicacion hojaComunicacion){
        hojaComunicacionActual = hojaComunicacion;        
        return "Verhojacomunicacion";
    }
    public String doEditarHojaComunicacion(HojaComunicacion hojaComunicacion){
        hojaComunicacionActual = hojaComunicacion;        
        return "Registrarhojacomunicacion";
    }
    public String doBorrarHojaComunicacion(Integer id){
        hojaComunicacionDAO.borrar(id);        
        return doListarHojaComunicaciones();
    }
    public String doNuevoHojaComunicacion(){
        setListaLaboratorios(laboratorioDAO.listarTodos());
        setListaHorarios(horarioDAO.listarTodos());
        listaRequisitosCursos = requisitocursoDAO.buscarTodas();
        hojaComunicacionActual = new HojaComunicacion();
        return "Registrarhojacomunicacion";
    }
    public String doBuscarByDescripcionHojaComunicaciones(){
        setListaHojaComunicaciones(hojaComunicacionDAO.listarByDescripcion(descripcionHojaComunicacion));
        return "HojaComunicaciones";
    }
    public String doListarHojaComunicaciones(){
        setListaHojaComunicaciones(hojaComunicacionDAO.listarTodos());
        return "HojaComunicaciones";
    }
    /* Fin Métodos de HojaComunicacion */
    public String doGuardarAplicacion(){
        aplicacionDAO.guardar(aplicacionActual);
        return "Aplicaciones.html";
    }
    public String doGuardarEscuela(){
        escuelaDAO.guardar(escuelaActual);
        return "Escuelas.html";
    }
    public String doGuardarCiclosacademicos(){
        cicloacademicoDAO.guardar(cicloacademicoActual);
        return "Ciclosacademicos.html";
    }
    public String doBorrarCicloacademico(Integer id){
        cicloacademicoDAO.borrar(id);
        listaciclos=cicloacademicoDAO.buscarTodas();
        return "Ciclosacademicos.html";
    }
    
    public String doBorrarRequisito(Integer id){
        requisitoDAO.borrar(id);
        return "Requisitos.html";
        }
    public String doBorrarRequisitocurso(Integer id){
        requisitocursoDAO.borrar(id);
        return "RequisitosCursos.html";
    }
    public String doBorrarAplicacion(Integer id){
        aplicacionDAO.borrar(id);
        listaAplicaciones=aplicacionDAO.buscarTodas();
        return "Aplicaciones.html";
    }
    public String doBorrarCurso(Integer id){
        cursoDAO.borrar(id);
        return "Cursos.html";
    }
    public String doBorrarHardware(Integer id){
        hardwareDAO.borrar(id);
        return "Hardware.html";
    }
    public String doBorrarEscuela(Integer id){
        escuelaDAO.borrar(id);
        listaEscuelas=escuelaDAO.buscarTodas();
        return "Escuelas.html";
    }
    public String doGuardarArea(){
        areaDAO.guardar(areaActual);
        return "Areas.html";
    }
    public String doGuardarCurso(){
        cursoDAO.guardar(cursoActual);
        return "Cursos.html";
    }
    public String doGuardarHardware(){
        hardwareDAO.guardar(hardwareActual);
        return "Hardware.html";
    }
    public String doGuardarRequisitos(){
        requisitoDAO.guardar(requisitoActual);
        return "Requisitos.html";
    }
    public String doGuardarRequisitosCurso(){
        requisitocursoDAO.guardar(requisitoCursoActual);
        return "RequisitosCursos.html";
    }
    public String doNuevoAplicacion(){
        aplicacionActual=new Aplicacion();
        return "Registraraplicacion.html";
    }
    public String doNuevoHardware(){
        hardwareActual=new Hardware();
        return "Registrarhardware.html";
    }
    public String doNuevoCicloacademico(){
        cicloacademicoActual=new Cicloacademico();
        return "Registrarcicloacademico.html";
    }
    public String doNuevoRequisitocurso(){
        doListarCursos();
        requisitoCursoActual=new RequisitoCurso();
        return "Registrarrequisitocurso.html";
    }
    public String doGuardarRequisitocurso(){
        requisitocursoDAO.guardar(requisitoCursoActual);
        return "RequisitosCursos.html";
    }
    public String doNuevoEscuela(){
        escuelaActual=new Escuela();
        return "Registrarescuela.html";
    }
    public String doNuevoCurso(){
        cursoActual=new Curso();
        return "Registrarcurso.html";
    }
    public String doNuevoRequisitos(){
        doListarHardware();
        doListarAplicacion();
        doListarRequisitosCursos();
        requisitoActual=new Requisito();
        return "Registrarrequisito.html";
    }    
    public String doNuevoRequisitosCurso(){
        doListarCursos();
        requisitoCursoActual=new RequisitoCurso();
        return "Registrarrequisitocurso.html";
    }
    public String doListarCiclosacademicos(){
        listaciclos=cicloacademicoDAO.buscarTodas();
        listaEscuelas=escuelaDAO.buscarTodas();
        return "Ciclosacademicos.html";
    }
    public String doListarAplicacion(){
        listaAplicaciones=aplicacionDAO.buscarTodas();
        return "Aplicaciones.html";
    }
    public String doListarCursos(){
        listaCursos=cursoDAO.listarTodos();
        return "Cursos.html";
    }   
    public String doListarHardware(){
        listaHardwares=hardwareDAO.buscarTodas();
        return "Hardware.html";
    }
    public String doListarEscuelas(){
        listaEscuelas=escuelaDAO.buscarTodas();
        return "Escuelas.html";
    }
    public String doListarRequisitosCursos(){
        listaRequisitosCursos=requisitocursoDAO.buscarTodas();
        return "RequisitosCursos.html";
    }
    public String doListarRequisitos(){
        doListarHardware();
        doListarAplicacion();
        doListarRequisitosCursos();
        listaRequisitos=requisitoDAO.buscarTodas();
        return "Requisitos.html";
    }            
    
    public String doBuscarEscuela(){
    listaEscuelas=escuelaDAO.buscarPornombre(descripcionescuela);        
    escuelaActual=listaEscuelas.get(0);
    return "Escuelas.html";
    }    
    
    public String getDescripcionescuela() {
        return descripcionescuela;
    }

    public void setDescripcionescuela(String descripcionescuela) {
        this.descripcionescuela = descripcionescuela;
    }

    public Escuela getEscuelaActual() {
        return escuelaActual;
    }

    public void setEscuelaActual(Escuela escuelaActual) {
        this.escuelaActual = escuelaActual;
    }

    public List<Escuela> getListaEscuelas() {
        return listaEscuelas;
    }

    public void setListaEscuelas(List<Escuela> listaEscuelas) {
        this.listaEscuelas = listaEscuelas;
    }

    public List<Aplicacion> getListaAplicaciones() {
        return listaAplicaciones;
    }

    public void setListaAplicaciones(List<Aplicacion> listaAplicaciones) {
        this.listaAplicaciones = listaAplicaciones;
    }

    public List<Curso> getListaCursos() {
        return listaCursos;
    }

    public void setListaCursos(List<Curso> listaCursos) {
        this.listaCursos = listaCursos;
    }

    public List<Hardware> getListaHardwares() {
        return listaHardwares;
    }
    public List<Cicloacademico> getListaciclos(){
        return listaciclos;
    }
    public void setListaciclos(List<Cicloacademico> ciclos){
        listaciclos=ciclos;
    }

    public void setListaHardwares(List<Hardware> listaHardwares) {
        this.listaHardwares = listaHardwares;
    }

    public Aplicacion getAplicacionActual() {
        return aplicacionActual;
    }

    public void setAplicacionActual(Aplicacion aplicacionActual) {
        this.aplicacionActual = aplicacionActual;
    }

    public Cicloacademico getCicloacademicoActual() {
        return cicloacademicoActual;
    }

    public void setCicloacademicoActual(Cicloacademico cicloacademicoActual) {
        this.cicloacademicoActual = cicloacademicoActual;
    }

    public Curso getCursoActual() {
        return cursoActual;
    }

    public void setCursoActual(Curso cursoActual) {
        this.cursoActual = cursoActual;
    }

    public Hardware getHardwareActual() {
        return hardwareActual;
    }

    public void setHardwareActual(Hardware hardwareActual) {
        this.hardwareActual = hardwareActual;
    }

    /**
     * @return the listaLaboratorios
     */
    public List<Laboratorio> getListaLaboratorios() {
        return listaLaboratorios;
    }

    /**
     * @param listaLaboratorios the listaLaboratorios to set
     */
    public void setListaLaboratorios(List<Laboratorio> listaLaboratorios) {
        this.listaLaboratorios = listaLaboratorios;
    }

    public String getDescripcionLaboratorio() {
        return descripcionLaboratorio;
    }
    public void setDescripcionLaboratorio(String descripcionLaboratorio) {
        this.descripcionLaboratorio = descripcionLaboratorio;
    }

    public List<Requisito> getListaRequisitos() {
        return listaRequisitos;
    }

    public void setListaRequisitos(List<Requisito> listaRequisitos) {
        this.listaRequisitos = listaRequisitos;
    }

    public List<RequisitoCurso> getListaRequisitosCursos() {
        return listaRequisitosCursos;
    }

    public void setListaRequisitosCursos(List<RequisitoCurso> listaRequisitosCursos) {
        this.listaRequisitosCursos = listaRequisitosCursos;
    }

    public Requisito getRequisitoActual() {
        return requisitoActual;
    }

    public void setRequisitoActual(Requisito requisitoActual) {
        this.requisitoActual = requisitoActual;
    }

    public RequisitoCurso getRequisitoCursoActual() {
        return requisitoCursoActual;
    }

    public void setRequisitoCursoActual(RequisitoCurso requisitoCursoActual) {
        this.requisitoCursoActual = requisitoCursoActual;
    }

    /**
     * @return the laboratorioActual
     */
    public Laboratorio getLaboratorioActual() {
        return laboratorioActual;
    }

    /**
     * @param laboratorioActual the laboratorioActual to set
     */
    public void setLaboratorioActual(Laboratorio laboratorioActual) {
        this.laboratorioActual = laboratorioActual;
    }

    /**
     * @return the descripcionHorario
     */
    public String getDescripcionHorario() {
        return descripcionHorario;
    }

    /**
     * @param descripcionHorario the descripcionHorario to set
     */
    public void setDescripcionHorario(String descripcionHorario) {
        this.descripcionHorario = descripcionHorario;
    }

    /**
     * @return the listaHorarios
     */
    public List<Horario> getListaHorarios() {
        return listaHorarios;
    }

    /**
     * @param listaHorarios the listaHorarios to set
     */
    public void setListaHorarios(List<Horario> listaHorarios) {
        this.listaHorarios = listaHorarios;
    }

    /**
     * @return the horarioActual
     */
    public Horario getHorarioActual() {
        return horarioActual;
    }

    /**
     * @param horarioActual the horarioActual to set
     */
    public void setHorarioActual(Horario horarioActual) {
        this.horarioActual = horarioActual;
    }

    /**
     * @return the descripcionHojaComunicacion
     */
    public String getDescripcionHojaComunicacion() {
        return descripcionHojaComunicacion;
    }

    /**
     * @param descripcionHojaComunicacion the descripcionHojaComunicacion to set
     */
    public void setDescripcionHojaComunicacion(String descripcionHojaComunicacion) {
        this.descripcionHojaComunicacion = descripcionHojaComunicacion;
    }

    /**
     * @return the listaHojaComunicaciones
     */
    public List<HojaComunicacion> getListaHojaComunicaciones() {
        return listaHojaComunicaciones;
    }

    /**
     * @param listaHojaComunicaciones the listaHojaComunicaciones to set
     */
    public void setListaHojaComunicaciones(List<HojaComunicacion> listaHojaComunicaciones) {
        this.listaHojaComunicaciones = listaHojaComunicaciones;
    }

    /**
     * @return the hojaComunicacionActual
     */
    public HojaComunicacion getHojaComunicacionActual() {
        return hojaComunicacionActual;
    }

    /**
     * @param hojaComunicacionActual the hojaComunicacionActual to set
     */
    public void setHojaComunicacionActual(HojaComunicacion hojaComunicacionActual) {
        this.hojaComunicacionActual = hojaComunicacionActual;
    }

    /**
     * @return the equipoLaboratorioActual
     */
    public EquipoLaboratorio getEquipoLaboratorioActual() {
        return equipoLaboratorioActual;
    }

    /**
     * @param equipoLaboratorioActual the equipoLaboratorioActual to set
     */
    public void setEquipoLaboratorioActual(EquipoLaboratorio equipoLaboratorioActual) {
        this.equipoLaboratorioActual = equipoLaboratorioActual;
    }

    /**
     * @return the equipoDisponibles
     */
    public List<Equipo> getEquipoDisponibles() {
        return equipoDisponibles;
    }

    /**
     * @param equipoDisponibles the equipoDisponibles to set
     */
    public void setEquipoDisponibles(List<Equipo> equipoDisponibles) {
        this.equipoDisponibles = equipoDisponibles;
    }
    
    
}
